package com.distributor;

import java.io.IOException;
import java.net.UnknownHostException;
import java.security.PublicKey;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import com.distributor.R.string;





import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.InputType;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class ResellerResult extends Activity
{
	
	ResellerInfo agentInfo=AppData.agentInfo;
	ListView lv_info;
	CheckBox chkBoxFav;
	private DataHelper dh;
	Handler handler=new Handler();
	MD5Generator md5Generator=new MD5Generator();
	HttpClient httpclient;
	HttpPost httppost = new HttpPost(AppData.hostURL+"/WebService/iTopUp/distributorapp.php");
	ProgressDialog pd=null;
	
	lv_info_adapter adapetr;
	String imei,balance,phn1,phn2,altphn,name,shopname,idproof,idnum,add1,add2,area,zipcode,state,bill,sexecutive,email;
	private static String[] names = new String[]
		    {
		        "IMEI","Balance","Phone1","Phone 2","Alt Phone","Name","Shop Name","ID Proof","ID Number","Address1","Address2","Area Name","ZipCode","State Name","Billing Template","Sales Executive","Email"
		    };
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.manage_agent_result);
		
		TextView txtaccname=(TextView)findViewById(R.id.textView1);
		
		lv_info=(ListView)findViewById(R.id.lv_info);
		
		chkBoxFav=(CheckBox)findViewById(R.id.checkBoxAddToFav);
		
		
		imei=(agentInfo.getIMEI().trim().length()>0?agentInfo.getIMEI():"Not Available");
		balance=(agentInfo.getBalance().trim().length()>0?agentInfo.getBalance():"Not Available");
		phn1=(agentInfo.getPhone1().trim().length()>0?agentInfo.getPhone1():"Not Available");
		phn2=(agentInfo.getPhone2().trim().length()>0?agentInfo.getPhone2():"Not Available");
		altphn=(agentInfo.getAltPhone().trim().length()>0?agentInfo.getAltPhone():"Not Available");
		name=(agentInfo.getName().trim().length()>0?agentInfo.getName():"Not Available");
		shopname=(agentInfo.getAccountName().trim().length()>0?agentInfo.getAccountName():"Not Available");
		idproof=(agentInfo.getIDProofType().trim().length()>0?agentInfo.getIDProofType():"Not Available");
		idnum=(agentInfo.getIDNumber().trim().length()>0?agentInfo.getIDNumber():"Not Available");
		add1=(agentInfo.getAddress1().trim().length()>0?agentInfo.getAddress1():"Not Available");
		add2=(agentInfo.getAddress2().trim().length()>0?agentInfo.getAddress2():"Not Available");
		area=(agentInfo.getAreaName().trim().length()>0?agentInfo.getAreaName():"Not Available");
		zipcode=(agentInfo.getAreaZipCode().trim().length()>0?agentInfo.getAreaZipCode():"Not Available");
		state=(agentInfo.getStateName().trim().length()>0?agentInfo.getStateName():"Not Available");
		bill=(agentInfo.getBillingTemplate().trim().length()>0?agentInfo.getBillingTemplate():"Not Available");
		sexecutive=(agentInfo.getSaleExecutive().trim().length()>0?agentInfo.getSaleExecutive():"Not Available");
		email=(agentInfo.getEmail().trim().length()>0?agentInfo.getEmail():"Not Available");
		
		txtaccname.setText(shopname);
		
		 String[] agentinfovalue=new String[]
				{
				imei,balance,phn1,phn2,altphn,name,shopname,idproof,idnum,add1,add2,area,zipcode,state,bill,sexecutive,email
				};
		
		adapetr=new lv_info_adapter(this,names,agentinfovalue);
//		btnLogOut=(Button)findViewById(R.id.btnLogout); 
//	    btnBack=(Button)findViewById(R.id.btnPrevious);
	    lv_info.setAdapter(adapetr);

		if(isAgentInFav())
		{
			chkBoxFav.setText("Remove From Favourites.");
			chkBoxFav.setChecked(true); 
		}
		
		chkBoxFav.setOnCheckedChangeListener(new OnCheckedChangeListener() 
		{
			
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
			{
				// TODO Auto-generated method stub
				if(isChecked)
				{

		 			addToFav(agentInfo);
		 			buttonView.setText("Remove From Favourites.");
				}
				else
				{
					removeFromFav(agentInfo);
		 			buttonView.setText("Add To Favourites.");
				}
				
			}
			
			private void removeFromFav(ResellerInfo agentInfo) 
			{
				 try
				 {
					 dh=new DataHelper(ResellerResult.this);
					 dh.deleteProdctFromFav(agentInfo);
				}
				catch(Exception e)
				{
					e.printStackTrace();
				}
				finally
				{
					if(dh!=null)
					{
						dh.close();
					}
				}
					 
			}

			private void addToFav(ResellerInfo agentInfo) 
			{
				try
				{
					dh=new DataHelper(ResellerResult.this);
					System.out.println("long:"+dh.insertToFav(agentInfo)); 
				}
				catch(Exception e)
				{
					e.printStackTrace();
				}
				finally
				{
					if(dh!=null)
					{
						dh.close();
					}
				}
			}
		});
//		
//	    btnLogOut.setOnClickListener(new OnClickListener()
//		{
//			public void onClick(View v)
//			{
//				  new AlertDialog.Builder(ResellerResult.this)
//				  .setTitle( "Exit Application" )
//			      .setMessage( "Are you sure you want to Logout?" )
//			      .setPositiveButton("YES", new android.content.DialogInterface.OnClickListener() 
//			       {
//			           public void onClick(DialogInterface arg0, int arg1) 
//			           {
//			        	   setResult(1);
//			               finish();
//			           }
//
//					   public void onClick(View v) 
//					   {
//						 // TODO Auto-generated method stub
//					   }
//					   
//			        })
//			        .setNegativeButton("NO",  new android.content.DialogInterface.OnClickListener() 
//			        {
//			            public void onClick(DialogInterface arg0, int arg1)
//			            {
//			                //do stuff onclick of CANCEL
//			            	arg0.dismiss();
//			            }
//
//						public void onClick(View v) 
//						{
//							// TODO Auto-generated method stub
//						}
//			        }).show();
//		  	}
//			
//		 });
//	    
//	    btnBack.setOnClickListener(new OnClickListener() 
//	    {
//			
//			public void onClick(View arg0) {
//				// TODO Auto-generated method stub
//			finish();	
//			}
//		});
//		btnAddBalance.setOnClickListener(new OnClickListener()
//		{
//			
//			public void onClick(View arg0) 
//			{
//
//				new AddBalanceDialog(ResellerResult.this).show();
//				/*final AlertDialog.Builder alert = new AlertDialog.Builder(ResellerResult.this);
//
//				alert.setTitle("Enter Amount");
//				
//				// Set an EditText view to get user input 
//				final EditText input = new EditText(ResellerResult.this);
//				input.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);
//
//				alert.setView(input);
//
//				
//				alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() 
//				{
//					public void onClick(DialogInterface dialog, int whichButton) 
//					{
//						
//						
//						if(input.getText().toString().trim().length()>0)
//						{
//							amount =Double.parseDouble(input.getText().toString())*100;
//							new Thread(addBalance, "Add Balance").start();
//							pd=ProgressDialog.show(ResellerResult.this,"please wait.",null);
//						    pd.setContentView(R.layout.progress);
//						}
//						else
//						{
//							Toast.makeText(ResellerResult.this,"Invalid Input.",Toast.LENGTH_SHORT).show();
//						 
//						}
//					}
//				});
//
//				alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
//				{
//				  public void onClick(DialogInterface dialog, int whichButton) 
//				  {
//					  dialog.dismiss();
//				  }
//				});
//
//				alert.show();
//				
//				*/
//				  
//			}
//		});
		
//		btnInfo.setOnClickListener(new OnClickListener()
//		{
//			
//			public void onClick(View v) 
//			{
//				 startActivityForResult(new Intent(ResellerResult.this,ResellerInfoActivity.class),33);
//			}
//		});
//		
//		
//		btnWeeklyStatement.setOnClickListener(new OnClickListener()
//		{
//			
//			public void onClick(View v) 
//			{
//				// TODO Auto-generated method stub
//				Toast.makeText(ResellerResult.this,"Coming Soon..",Toast.LENGTH_SHORT).show();
//			}
//		});
		
	}
	
	private boolean isAgentInFav() 
	{
		try
		{
			dh=new DataHelper(ResellerResult.this);
			
			boolean status= dh.checkInFav(agentInfo);
			System.out.println("Returning"+status);
			return status;
			 
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return false;
		}
		finally
		{
			if(dh!=null)
			{
				dh.close();
			}
		}
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) 
	{
	    if(resultCode==1 && requestCode==33)
	    {
	    	setResult(2);
	        finish();
	    }
	}	
	
	double roundTwoDecimals(double d) 
	{
        DecimalFormat twoDForm = new DecimalFormat("#.##");
        return Double.valueOf(twoDForm.format(d));
	}
	
//	 private class AddBalanceDialog extends Dialog implements OnClickListener
//	 {
//		 
//			private Context context;
//			private EditText etAmount,etTransactionPin;
//			private Button btnOk,btnCancel,btnOkConfirmation,btnCancelConfirmation;
//			private Double amount;
//			private TextView tvConfirmationText,tvDialogHeader;
//			
//		 public AddBalanceDialog(Context context) 
//		 {
//			super(context);
//			this.context=context;
//			requestWindowFeature(Window.FEATURE_NO_TITLE);
//			setContentView(R.layout.add_balance);
//			etAmount=(EditText)findViewById(R.id.etAmount);
//			etAmount.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL);
//			 
//			etTransactionPin=(EditText)findViewById(R.id.etTransactionPin);
//			btnOk=(Button)findViewById(R.id.btn_ok);
//			btnCancel=(Button)findViewById(R.id.btn_Cancel);
//			btnOk.setOnClickListener(this);
//			btnCancel.setOnClickListener(this);
//		 }
//
//		public void onClick(View v) 
//		{
//			if (v == btnOk)
//			{
//				try
//				{
//					if(etAmount.getText().toString().trim().length()>0)
//					{
//						if(AppData.getUserInfo().getTransactionPassword().equals(md5Generator.MD5(etTransactionPin.getText().toString())))
//						{
//							dismiss();
//							setContentView(R.layout.confirmation_layout);
//							 
//							tvConfirmationText=(TextView)findViewById(R.id.tvConfirmationText);
//							 	
//							btnOkConfirmation=(Button)findViewById(R.id.btn_Ok_confirmation);
//							btnCancelConfirmation=(Button)findViewById(R.id.btn_Continue_confirmation);
//								
//							tvConfirmationText.setText("Tuma "+etAmount.getText().toString() +" Tshs kwenda namba "+agentInfo.getPhone1()+".");
//							btnOkConfirmation.setOnClickListener(this);
//							btnCancelConfirmation.setOnClickListener(this);
//							show();
//						}
//						else
//						{
//							Toast.makeText(context,"Invalid Transaction PIn",Toast.LENGTH_SHORT).show();
//							etTransactionPin.setText("");
//						}
//						
//					}
//					else
//					{
//						Toast.makeText(ResellerResult.this,"Please Enter Amount.",Toast.LENGTH_SHORT).show(); 
//					}
//				}
//				catch(Exception e)
//				{
//					e.printStackTrace();
//				}
//			}
//			else if(v==btnCancel)
//			{
//				dismiss();
//			}
//			
//			else if(v==btnOkConfirmation)
//			{
//				dismiss();		 
//				amount =Double.parseDouble(etAmount.getText().toString())*100;
//				new Thread(addBalance, "Add Balance").start();
//				pd=ProgressDialog.show(ResellerResult.this,"please wait.",null);
//				pd.setContentView(R.layout.progress);
//				  
//			}
//			else if(v==btnCancelConfirmation)
//			{
//				dismiss();
//			}	
//			
//		}
//		
//		Runnable addBalance=new Runnable()
//		{
//			
//			public void run()
//			{
//				try
//				{
//					httpclient = new DefaultHttpClient();
//					String checksumString=
//										AppData.getUserInfo().getLoginID()+"|"+
//										agentInfo.getPhone1()+"|"+
//										amount+"|"+
//										AppData.getUserInfo().getpublickey();
//					System.out.println("Check sum string===>"+checksumString);
//					String finalChecksum = md5Generator.MD5(md5Generator.SHA1(checksumString));
//					System.out.println("Final Checksum:"+finalChecksum);
//					try 
//					{     
//					
//						List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
//						nameValuePairs.add(new BasicNameValuePair("function", "BalanceTransfer"));
//					    nameValuePairs.add(new BasicNameValuePair("LoginId", AppData.getUserInfo().getLoginID()));
//					    nameValuePairs.add(new BasicNameValuePair("Phone1", agentInfo.getPhone1()));
//					    nameValuePairs.add(new BasicNameValuePair("Amount",Double.toString(amount))); 
//					    nameValuePairs.add(new BasicNameValuePair("Checksum",finalChecksum)); 
//					    
//					    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//					    
//					    ResponseHandler<String> responseHandler = new BasicResponseHandler();
//					    
//						String response = httpclient.execute(httppost,responseHandler);
//						System.out.println("Response:"+response);
//					    
//						final JSONObject jsonObject=new JSONObject(response);
//						
//						  if(jsonObject.getString("ResponseCode").equals("000"))
//			              {
//							  
//								handler.post(new Runnable()
//								{
//									
//									public void run() 
//									{
//										// TODO Auto-generated method stub
//										try {
//											tvBalance.setText(""+roundTwoDecimals(Double.parseDouble(jsonObject.getString("Balance"))/100));
//										} catch (JSONException e) {
//											// TODO Auto-generated catch block
//											e.printStackTrace();
//										}
//										pd.dismiss();
//										Toast.makeText(ResellerResult.this,"Balance Transfered Successfully",Toast.LENGTH_LONG).show();
//										 
//									}
//								});
//							  	 
//			              }
//						  else
//						  {
//							  handler.post(new Runnable()
//			            	  {
//								
//								public void run() 
//								{
//									// TODO Auto-generated method stub
//									pd.dismiss();
//									try 
//									{
//										Toast.makeText(ResellerResult.this,jsonObject.getString("ResponseDescription"),Toast.LENGTH_SHORT).show();
//										
//									}
//									catch (JSONException e) 
//									{
//										e.printStackTrace();
//									}
//								}
//							});
//							  
//						  }
//					}
//					catch (final JSONException e)
//					{
//						handler.post(new Runnable()
//						{
//							
//							public void run() 
//							{
//								// TODO Auto-generated method stub
//								pd.dismiss();
//								Toast.makeText(ResellerResult.this,e.getMessage(),Toast.LENGTH_LONG).show(); 
//							}
//						});
//					}
//					catch(UnknownHostException e)
//					{
//						
//						handler.post(new Runnable()
//						{
//							
//							public void run() 
//							{
//								// TODO Auto-generated method stub
//								pd.dismiss();
//								Toast.makeText(ResellerResult.this,getString(R.string.conn_msg),Toast.LENGTH_LONG).show(); 
//							}
//						});
//						 
//					}
//					catch (final ClientProtocolException e) 
//					{
//				        // TODO Auto-generated catch block
//							handler.post(new Runnable()
//							{
//								
//								public void run() 
//								{
//									// TODO Auto-generated method stub
//									pd.dismiss();
//									Toast.makeText(ResellerResult.this,getString(R.string.conn_msg),Toast.LENGTH_LONG).show(); 
//								}
//							});
//							 
//				    }
//					
//					catch (final IOException e) 
//					{
//							handler.post(new Runnable()
//							{
//								
//								public void run() 
//								{
//									// TODO Auto-generated method stub
//									pd.dismiss();
//									Toast.makeText(ResellerResult.this, e.getMessage(),Toast.LENGTH_LONG).show();
//								}
//							}); 
//				    }  
//				}
//				
//				catch(Exception e)
//				{
//					e.printStackTrace();
//				}
//				
//				
//			}
//		};
//	 }//dialog
//	
	
	
	
	 
	
}
